﻿#pragma once
#include "afxdialogex.h"
#include "resource.h"
#include "pluginMain.h"



using namespace Script;
using namespace Register;


// FixIAT_dlg 对话框

class FixIAT_dlg : public CDialogEx
{
	DECLARE_DYNAMIC(FixIAT_dlg)

public:
	FixIAT_dlg(CWnd* pParent = nullptr);   // 标准构造函数
	virtual ~FixIAT_dlg();

// 对话框数据
#ifdef AFX_DESIGN_TIME
	enum { IDD = IDD_DIALOG3 };
#endif

protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnClose();
	CString m_rebuildIatAddr;
	afx_msg void OnBnClickedButtonfixiat();
	CString m_codeSection;
	CString m_codeSectionSize;
	CString m_OEP;

};

// 创建非模式对话框
void create_NoModelDialog();


// 扫描代码段
void scanCodeSection();		

// 单步回调
void sub_stepIntoCallBack(CBTYPE cbType, void* callbackInfo);

// 新建IAT表，并建立映射
void rebuildIat();

// 修复分支指令
void repairBranchInstruction();


// 判断str的第一个子串与subStr是否相等
bool Str_IsBeginWith(char* str, const char* subStr);


//停止调试回调
void sub_stopDebugCallBack(CBTYPE cbType, void* callbackInfo);